package com.heima.corss.controller;

/*
    1. ArrayList无参构造创建初始容量多少？后续扩容机制？
            初始容量为0.
            size： 1. 表示集合中已有的元素个数
                   2. 表示下次要添加的元素索引位置

           grow()： 底层核心的扩容方法.
               在第一次往集合中添加元素的时候，底层会将elementData数组长度扩容为10。 -- Arrays.copyOf();
               后续添加当数组elementData存满以后会以1.5倍的系数扩容。

               问： 第三次扩容数组长度是多少？
               10   15   22

    2. ArrayList带参构造创建初始容量多少？后续扩容机制？
            带参构造创建ArrayList会以指定的容量来初始化对象数组：this.elementData = new Object[initialCapacity];
            如果指定的初始容量过小，会导致集合在添加过程中频繁的进行扩容，效率极低，建议初始容量 >= 10

               问：ArrayList每次扩容都是数组长度* 1.5倍增长吗？   -- 不是，如果以带参构造创建且参数给的很小，比如 < 10 ，扩容在原有长度 + 1
 */

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListDemo {
    public static void main(String[] args) {
        /*ArrayList<String> list1 = new ArrayList<>();
        list1.add("hello");

        for (int i = 1; i <= 10; i++) {
            list1.add("world");
        }


        System.out.println("list1 = " + list1);


        int[] arr = {11, 22, 33};
        //需求：将arr数组内容拷贝到一个长度为10的新数组中
        int[] brr = Arrays.copyOf(arr, 10);
        System.out.println(Arrays.toString(brr));*/


        ArrayList<String> list = new ArrayList<>(1);
        list.add("hello");
        list.add("world");
        list.add("java");


    }
}
